package com.ai.ly.goodsautocat.autocat;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;

import com.ai.ly.goodsautocat.common.Constants;
import com.ai.ly.goodsautocat.util.FileUtil;

/**
 * 
 * Title: 加载字典 <br>
 * Description: <br>
 * Date: 2018年3月30日 <br>
 * Copyright (c) 2018 AILK <br>
 * 
 * @author liangyi
 */
public class DictMapOfAutoCat {

    //字典，key=单词，value=是在字典中第几个单词（从1开始）
    private static Map<String, Integer> dictMap=new HashMap<>();
    
    
    
    private DictMapOfAutoCat() {
        try {
            File file=FileUtil.getFileInSys(AutoCatConstant.dictFilePath);
            BufferedReader e = new BufferedReader(new FileReader(file));
            int index=1;
            for (String lineContent = e.readLine(); lineContent != null; lineContent = e.readLine()) {
                String word=lineContent.substring(0, lineContent.lastIndexOf(Constants.SPLIT_BLANK));
                dictMap.put(word, index++);
            }
            e.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private static DictMapOfAutoCat instance=new DictMapOfAutoCat();
    
    public static DictMapOfAutoCat getInstance() {
        return instance;
    }
    
    /**
     * 获取单词在字典中的位置（是第几个单词）
     * @param word
     * @return 若字典中不存在该单词，则返回-1
     * @author liangyi
     */
    public static int getIndexOfWordInDict(String word) {
        Integer result=dictMap.get(word);
        if (result==null) {
            return -1;
        }
        return result.intValue();
    }
    
    /**
     * 返回字典的大小
     * @return
     * @author liangyi
     */
    public static int getDictSize() {
        return dictMap.size();
    }
    
    public static void main(String[] args) {
        System.out.println(dictMap.get("小米"));
    }
}
